const fp = require('lodash/fp')

const cars = [
	{
		name: 'Ferrari FF',
		horsepower: 660,
		dollar_value: 700000,
		in_stock: true
	},

	{
		name: 'Spyker Cl2 Zagato',
		horsepower: 650,
		dollar_value: 648000,
		in_stock: false
	},

	{
		name: 'Jaguar XKR-S',
		horsepower: 550,
		dollar_value: 132000,
		in_stock: false
	},

	{
		name: 'Audi R8',
		horsepower: 525,
		dollar_value: 114200,
		in_stock: false
	},

	{
		name: 'Aston Martin One-77',
		horsepower: 750,
		dollar_value: 1850000,
		in_stock: true
	},

	{
		name: 'Pagani Huayra',
		horsepower: 700,
		dollar_value: 1300000,
		in_stock: false
	}
]

// 练习 1
// 获取最后一条数据的in_stock属性值
const getLastCarInStock = fp.flowRight(fp.prop('in_stock'), fp.last)
// console.log(getLastCarInStock(cars))

// 练习2
// 获取第一个car的name
const getFirstCarName = fp.flowRight(fp.prop('name'), fp.first)
// console.log(getFirstCarName(cars))

// 练习3
// 使用帮助函数_average重构averageDollarValue
const _average = function(xs) {
	return fp.reduce(fp.add, 0, xs) / xs.length
}
const averageDollarValue = fp.flowRight(
	_average,
	fp.map(fp.prop('dollar_value'))
)
// console.log(averageDollarValue(cars))

// 练习4
// 使用flowRight写一个sanitizeNames函数
// sanitizeNames(["Hello World"]) => ["hello_world"]
const _underscore = fp.replace(/\W+/g, '_')
const sanitizeNames = fp.flowRight(fp.toLower, _underscore)
// console.log(sanitizeNames([ 'Hello World' ]))
